<?php
//   +----------------------------------------------------------------------
//   | Copyright (c) 2015-2025 http://www.hdphp.cn All rights reserved.
//   | Licensed ( http://www.hdphp.cn/licenses/ )
//   | Author: Jack <sophia2152@qq.com>
//   | 官方网址: http://www.hdphp.cn
//   | 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用。
//   | 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
//   +----------------------------------------------------------------------
namespace hdphp\services\sms;

use hdphp\basic\BaseManager;
use think\Container;
use think\facade\Config;

/**
 * Class：Sms
 * 创建人：Jack
 * 创建时间：2023/11/30 8:43
 * @package hdphp\services\sms
 */
class Sms extends BaseManager
{
    /**
     * 空间名
     * @var string
     */
    protected $namespace = '\\hdphp\\services\\sms\\storage\\';

    /**
     * 注释：默认驱动
     * 创建人：Jack
     * 创建时间：2023/11/30 8:48
     * @return mixed
     */
    protected function getDefaultDriver()
    {
        return Config::get('sms.default', 'yunxin');
    }

    /**
     * 注释：获取类的实例
     * 创建人：Jack
     * 创建时间：2023/11/30 8:47
     * @param $class
     * @return mixed
     */
    protected function invokeClass($class)
    {
        if (!class_exists($class)) {
            throw new \RuntimeException('class not exists: ' . $class);
        }
        $this->getConfigFile();

        if (!$this->config) {
            $this->config = Config::get($this->configFile . '.stores.' . $this->name, []);
        }

        $handleAccessToken = new AccessToken($this->config['app_key'] ?? '', $this->config['app_secret'] ?? '');
        $handle = Container::getInstance()->invokeClass($class, [$this->name, $handleAccessToken, $this->configFile]);
        $this->config = [];
        return $handle;
    }
}